home *** CD-ROM | disk | FTP | other *** search
- /*
- * WBRun.c - Copyright © 1990 by S.R. & P.C.
- *
- * Created: 28 Apr 1991 20:17:57
- * Modified: 06 Mar 1993 19:47:17
- *
- * Make>> sc <file>.c
- * Make>> slink LIB:cs.o <file>.o SC SD ND BATCH QUIET TO <file> LIB LIB:startup.lib
- * Make>> Protect <file> P ADD
- */
-
- #include <libraries/ParMBase.h>
- #include <proto/ParM.h>
-
- char *Template = "Prog/A,Args/M,STACK/K/N,PRI/K/N,DELAY/K/N";
- char *CliHelp = "Usage: WBRun Prog [args] [STACK size] [PRI pri] [DELAY sec]\n";
-
- struct ParMBase *ParMBase;
-
-
- #define ARG_STACK 2
- #define ARG_PRI 3
- #define ARG_DELAY 4
-
-
- long Main(char *argv[], struct WBStartup *WBenchMsg)
- {
- struct Process *pp;
- struct Extended_WBStartup *EWBS = NULL;
- char **args;
- long argl[5]; /* 0 and 1 not used */
- long DefaultStack, i, NumArg=1, err = 20;
- APTR OldWindowPtr;
-
- if (!(ParMBase = (struct ParMBase *)OpenLibrary("parm.library", 6L))) {
- PutStr("Requires parm.library V6");
- return 20;
- }
- pp = (struct Process *)SysBase->ThisTask;
- OldWindowPtr = pp->pr_WindowPtr;
- pp->pr_WindowPtr = (APTR)-1;
- DefaultStack = Cli()->cli_DefaultStack << 2;
-
- /* Init array of long int type arguments */
- for(i=2;i<5;i++)
- argl[i] = (argv[i]) ? *(long *)argv[i] : 0;
- if (argl[ARG_STACK])
- DefaultStack = argl[ARG_STACK];
-
- /* count args */
- if (args = (char **)argv[1]) {
- while(*args++)
- NumArg++;
- }
-
- if (EWBS = AllocWBStartup(NumArg)) {
- if (MakeWBArg(NULL, EWBS->WBStartup.sm_ArgList, argv[0])) {
- if (args = (char **)argv[1]) {
- i = 1;
- while(*args) {
- if (!MakeWBArg(NULL, &EWBS->WBStartup.sm_ArgList[i++], *args++))
- goto Exit;
- }
- }
- if (GetTool(NULL, EWBS, DefaultStack)) {
- WBRunTags(NULL, EWBS, WBRun_Pri, argl[ARG_PRI], TAG_DONE);
- Delay(argl[ARG_DELAY]*50);
- err = 0;
- }
- }
- }
-
- Exit:
- FreeRepliedWBMessages();
- if (err && EWBS)
- WBFree(EWBS);
- pp->pr_WindowPtr = OldWindowPtr;
- CloseLibrary(ParMBase);
- return err;
- }
-
-
-